package com.sztx.pay.center.rpc.api.service;

import com.sztx.pay.center.rpc.api.domain.ResponsePageModel;
import com.sztx.pay.center.rpc.api.domain.SettleRuleListRequest;
import com.sztx.pay.center.rpc.api.domain.SettleRuleListResponse;
import com.sztx.pay.center.rpc.api.domain.SettleRuleRequest;
import com.sztx.pay.center.rpc.api.domain.SettleRuleResponse;

public interface SettleRpcService {
	
	public long calculateHandlingFee(int tradeType, int settleType, String userId, long amount);
	
	public long calculateHandlingFee(int tradeType, int settleType, String userId, long amount,String channelId);
	
	/**
	 * 缴费商查询手续费接口
	 * cardType:
	 *  CARD_DEBIT(1, "借记卡"),	
		CARD_CREDIT(2, "信用卡"),
		CARD_DOUBLE(3, "双卡");
	 * @param tradeType
	 * @param settleType
	 * @param userId
	 * @param amount
	 * @param channelId
	 * @param bankId
	 * @param cardType
	 * @return
	 */
	public long calculateHandlingFee(int tradeType, int settleType, String userId, long amount,String channelId,String bankId,int cardType);

	public void configSettleRule(SettleRuleRequest req);
	
	public SettleRuleResponse queryUserSettleRule(SettleRuleRequest req);
	
	public ResponsePageModel<SettleRuleListResponse> querySettleRuleList(SettleRuleRequest req,int pageNo,int pageSize);
	
	public void configSettleRules(SettleRuleListRequest list);
	
	public void cancleRule(String channelId,String userId);
	
	public void reloadJfConfig();
	
	/**
	 * 进行结算担保交易的B2C订单
	 */
	public void settlingOrders();
}
